6956. Статистика Дней Рождений

 

В компании собрали информацию о днях рождения сотрудников. Напишите программу, которая подсчитает количество людей, родившихся в каждый месяц.

 

Вход. Первая строка содержит количество сотрудников n (1 ≤ n ≤ 5000). Каждая из следующих n строк содержит ID (4-цифровое число) сотрудника и его/ее дату рождения. Дата рождения задается в формате: день/месяц/год. Все заданные даты корректны.

 

Выход. Вывести номер месяца (1 – 12) и количество сотрудников, родившихся в нем.

 

Пример входа

Пример выхода

10

1000 1/2/1967

1012 13/10/1940

1103 5/1/1965

2012 16/7/1980

1125 18/9/1979

1235 10/10/1976

1400 16/11/1973

1013 5/1/1965

2109 28/7/1958

2155 10/12/1970

1 2

2 1

3 0

4 0

5 0

6 0

7 2

8 0

9 1

10 2

11 1

12 1

 

 

РЕШЕНИЕ

сортировка подсчетом

 

Анализ алгоритма

Объявим массив из 12 элементов и при помощи сортировки подсчетом вычислим количество сотрудников в каждом месяце.

 

Реализация алгоритма

В массиве a будем собирать статистику по дням рождения за каждый месяц (месяца пронумерованы от 1 до 12).

 

int a[13];

 

Читаем входные данные. Подсчитываем количество сотрудников, родившихся в каждом месяце.

 

scanf("%d", &n);

memset(a,0,sizeof(a));

for(i = 0; i < n; i++)

{

  scanf("%d %d/%d/%d",&id,&d,&m,&y);

  a[m]++;

}

 

Выводим ответ.

 

for(i = 1; i <= 12; i++)

  printf("%d %d\n",i,a[i]);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int tests = con.nextInt();

    int m[] = new int[13];

   

    while(tests-- > 0)

    {

      con.next();

      m[Integer.parseInt(con.next().split("/")[1])]++;

    }

   

    for(int i = 1; i <= 12; i++)

      System.out.println(i + " " + m[i]);

 

    con.close();

  }

}